home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr48
/
proj3d.zip
/
PROJ3D.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1993-04-01
|
3KB
|
179 lines
Program Projectile3d;
uses Dos,graph,crt;
var
Plasma: array[0..300,0..200] of byte;
procedure EgaVgaDriverProc; external;
{$L C:\TP\BGI\EGAVGA.OBJ }
procedure Abort(Msg : string);
begin
Writeln(Msg, ': ', GraphErrorMsg(GraphResult));
Halt(1);
end;
Procedure init;
var
gd,gm:integer;
c:integer;
begin
if RegisterBGIdriver(@EGAVGADriverProc) < 0 then
Abort('EGA/VGA');
gd:=vga;
gm:=vgahi;
initgraph(gd,gm,'');
randomize;
end;
Procedure defineit;
var
A,B,C,D,N:integer;
l,m,q,o:word;
begin
for A:=0 to 14 do
for B:=0 to 9 do
Begin
N:=random(255);
For c:=0 to 19 do
For d:=0 to 19 do
plasma[(A*20)+C,(B*20)+D]:=N;
End;
GetTime(l,m,q,o);
randseed:=l*m*q*o;
randomize;
end;
function color(n:byte):byte;
begin
case n of
11: color:=white;
10: color:=lightgray;
9: color:=lightred;
8: color:=red;
7: color:=brown;
6: color:=yellow;
5: color:=lightgreen;
4: color:=green;
3: color:=lightcyan;
2: color:=cyan;
1: color:=lightblue;
0: color:=blue
end;
end;
Procedure Showit;
var
X,Y,A,B,C,D:integer;
begin
clearviewport;
for y:=0 to 189 do
for x:=0 to 189 do
begin
{ putpixel(150+X- (y div 8)+(plasma[x,y] div 10) ,
20+Y+ (x div 8)-(plasma[x,y] div 10),color(plasma[X,Y] div 26));}
Setcolor(color(plasma[X,Y] div 21 ));
A:=150+X- (y div 8)+(plasma[x,y] div 8);
B:=20+Y+ (x div 8)-(plasma[x,y] div 8);
C:=150+X- (y div 8);
D:=20+Y+ (x div 8);
setwritemode(Normalput);
line(3*A-400,2*B,3*C-400,2*D);
{ putpixel(X,Y,plasma[X,Y] div 4);}
end;
end;
Procedure Q10across;
var
X,Y,A,B,temp:integer;
begin
for Y:=0 to 19 do
for X:=0 to 18 do
begin
temp:=(plasma[X*10,y*10]+plasma[(x+1)*10,y*10]) div 2;
for a:=0 to 9 do
for b:=0 to 9 do
begin
plasma[a+x*10,b+y*10]:=temp;
plasma[a+(X+1)*10,b+y*10]:=temp;
end;
end;
end;
Procedure Q10down;
var
X,Y,A,B,temp:integer;
begin
for X:=0 to 19 do
for Y:=0 to 18 do
begin
temp:=(plasma[X*10,y*10]+plasma[x*10,(y+1)*10]) div 2;
for a:=0 to 9 do
for b:=0 to 9 do
begin
plasma[a+x*10,b+y*10]:=temp;
plasma[a+X*10,b+(y+1)*10]:=temp;
end;
end;
end;
Procedure Qacross;
var
X,Y,Temp:integer;
begin
for Y:=0 to 199 do
for X:=0 to 198 do
begin
Temp:=(plasma[X,Y]+plasma[X+1,Y]) div 2;
plasma[x,y]:=temp;
plasma[x+1,y]:=temp;
end;
end;
Procedure Qdown;
var
X,Y,Temp:integer;
begin
for X:=0 to 199 do
for Y:=0 to 198 do
begin
Temp:=(plasma[X,Y]+plasma[X,Y+1]) div 2;
plasma[x,y]:=temp;
plasma[x,y+1]:=temp;
end;
end;
Procedure Quantize;
var c:integer;
begin
q10across;
q10down;
qacross;
qdown;
qacross;
qdown;
qacross;
qdown;
qacross;
qdown;
qacross;
qdown;
qacross;
qdown;
end;
begin
init;
defineit;
Quantize;
showit;
repeat until keypressed;
closegraph;
Writeln('This program was created using Turbo Pascal V6.0');
Writeln('Copyright Kevin Helman & Vector Graphics Associates 1992');
Writeln('Feel Free to Distrubute this Program');
end.